home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <intuition/intuition.h>
-
- #include <clib/exec_protos.h>
- #include <clib/commodities_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/gadtools_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/alib_protos.h>
- #include <stdio.h>
-
- #include "/include/server.h"
-
- #define MUST_RETRY 0
- #define MUST_BLANK 1
-
- extern struct List ClientsList;
-
- extern UWORD fonth, wleft, wtop, DefaultClient, delaySecs, delayEvents;
- extern BOOL Blanking, RandomClient, CommodityActive, StayCool, BlankStatus;
- extern struct Gadget *glist, *random_gdg, *active_gdg, *modeid_gdg, *list_gdg;
- extern CxObj *broker;
-
- extern struct Screen *WBS;
- extern struct VisualInfo *vi;
- extern struct TextAttr topazFont;
-
- extern BOOL SetUpGadgets(void);
- extern void RemoveGadgets(void);
-
- extern void AskFiles( void );
-
- extern void ClearPendingMessages( struct MsgPort * );
-
- extern void StartBlanking( void );
- extern void RemoveClient( UWORD, char * );
- extern void SendCommandToClient( ULONG );
-
- extern void GetDisplayIDFromNode( UWORD );
- extern struct ModeNode *DisplayNode;
- extern ULONG DisplayID;
-
- /***************
- * *
- * WINDOW STUFF *
- * *
- ***************/
-
- struct Window *window;
- char wname[100];
- ULONG windowSignal = NULL;
-
-
- void DetachGadgets( void )
- {
- GT_SetGadgetAttrs( list_gdg, window, NULL, GTLV_Labels, ~0, TAG_END );
- }
-
-
- void AttachGadgets( void )
- {
- GT_SetGadgetAttrs( list_gdg, window, NULL, GTLV_Labels, &ClientsList, GTLV_Selected, DefaultClient, TAG_END );
- }
-
-
- BOOL PopUpWindow( void )
- {
- if ( window )
- {
- ActivateWindow( window );
- WindowToFront( window );
- return( TRUE );
- }
-
- if ( SetUpGadgets() )
- {
- if ( window = OpenWindowTags( NULL,
- WA_Width, 300,
- WA_Height, 138 + fonth,
- WA_Left, wleft,
- WA_Top, wtop,
- WA_Gadgets, glist,
- WA_Title, wname,
- WA_ScreenTitle, PROGRAMNAME" "PROGRAMVERSION" © 1994 by Stefano Reksten of 3AM",
- WA_IDCMP, IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_CLOSEWINDOW | INTEGERIDCMP | LISTVIEWIDCMP | BUTTONIDCMP | CHECKBOXIDCMP,
- WA_Flags, WFLG_DEPTHGADGET | WFLG_DRAGBAR | WFLG_CLOSEGADGET | WFLG_ACTIVATE,
- TAG_END ) )
- {
- GT_RefreshWindow( window, NULL );
- AttachGadgets();
- windowSignal = 1L << window->UserPort->mp_SigBit;
- return( TRUE );
- }
- RemoveGadgets();
- }
- DisplayBeep( NULL );
- return( FALSE );
- }
-
-
- void ShutWindow( void )
- {
- if ( window )
- {
- ClearPendingMessages( window->UserPort );
- wleft = window->LeftEdge;
- wtop = window->TopEdge;
- CloseWindow( window );
- window = NULL;
- windowSignal = NULL;
- RemoveGadgets();
- }
- }
-
-
- void HandleWindowMessages( void )
- {
- struct IntuiMessage *imsg;
- ULONG class;
- UWORD code;
- ULONG addr;
-
- while( window && ( imsg = GT_GetIMsg( window->UserPort ) ) )
- {
- class = imsg->Class;
- code = imsg->Code;
- addr = (ULONG)imsg->IAddress;
- GT_ReplyIMsg( imsg );
-
- switch( class )
- {
- case IDCMP_RAWKEY:
- switch( code )
- {
- case 0x13:
- RandomClient ^= TRUE;
- GT_SetGadgetAttrs( random_gdg, window, NULL, GTCB_Checked, RandomClient, TAG_END );
- break;
- case 0x20:
- CommodityActive ^= TRUE;
- GT_SetGadgetAttrs( active_gdg, window, NULL, GTCB_Checked, CommodityActive, TAG_END );
- break;
- case 0x25:
- ShutWindow();
- break;
- case 0x10:
- StayCool = FALSE;
- break;
- case 0x35:
- if ( CommodityActive && !Blanking && BlankStatus != MUST_BLANK )
- {
- Delay( 10 );
- BlankStatus = MUST_BLANK;
- StartBlanking();
- }
- break;
- case 0x33:
- AskFiles();
- break;
- case 0x27:
- RemoveClient( DefaultClient, NULL );
- break;
- }
- break;
- case IDCMP_REFRESHWINDOW:
- GT_BeginRefresh( window );
- GT_EndRefresh( window, TRUE );
- break;
- case IDCMP_CLOSEWINDOW:
- ShutWindow();
- break;
- case IDCMP_GADGETUP:
- switch( ((struct Gadget *)addr)->GadgetID )
- {
- case TIMEOUT_GDG:
- delaySecs = ((struct StringInfo *)((struct Gadget *)addr)->SpecialInfo)->LongInt;
- delayEvents = delaySecs * 10;
- break;
- case RANDOM_GDG:
- RandomClient ^= TRUE;
- break;
- case ACTIVE_GDG:
- CommodityActive ^= TRUE;
- break;
- case HIDE_GDG:
- ShutWindow();
- break;
- case QUIT_GDG:
- StayCool = FALSE;
- break;
- case BLANK_GDG:
- if ( CommodityActive && !Blanking && BlankStatus != MUST_BLANK )
- {
- Delay( 10 );
- BlankStatus = MUST_BLANK;
- StartBlanking();
- }
- break;
- case MODEID_GDG:
- GetDisplayIDFromNode( code );
- break;
- case SHOWINTERFACE_GDG:
- AskFiles();
- break;
- case KILL_GDG:
- RemoveClient( DefaultClient, NULL );
- break;
- case LIST_GDG:
- DefaultClient = code;
- break;
- }
- break;
- }
- }
- }
-